package model
{{- $ClassName := .ClassName }}
{{- $EventPackage := .EventPackage}}
{{- $CommandPackage := .CommandPackage}}

import (
    {{.time}}
    "{{.Namespace}}/pkg/cmd-service/domain/{{.aggregate_name}}/field"
    "github.com/liuxd6825/dapr-go-ddd-sdk/metadata"
)

//
// {{.ClassName}}
// @Description: {{.Description}} 实体类型
//
type {{.ClassName}} struct {
{{- range $name, $property := .Properties}}
    {{$property.UpperName}} {{if $property.IsArray}}[]*{{end}}{{$property.GoLanType}} `json:"{{$property.JsonName}}"  validate:"{{$property.GetValidate}}" description:"{{$property.Description}}"` {{if $property.HasDescription }}// {{$property.Description}}{{ end }}
{{- end}}
}

//
// {{.ClassName}}Metadata
// @Description:  {{.Description}} 元数据
//
type {{.ClassName}}Metadata struct {
{{- range $name, $property := .Properties}}
    {{$property.UpperName}} metadata.Property  `json:"-"`
{{- end}}
	Properties  metadata.Properties  `json:"properties"`
}

var (
    _{{.name}}Metadata = new{{.Name}}Metadata()
)

//
// New{{.ClassName}}
// @Description: 新建{{.Description}}对象
//
func New{{.ClassName}}()*{{.ClassName}}{
    return &{{.ClassName}}{}
}

//
// new{{.ClassName}}Metadata
// @Description: 新建{{.Description}}元数据
// @return *{{.ClassName}}Metadata
//
func new{{.ClassName}}Metadata() *{{.ClassName}}Metadata {
	v := &{{.ClassName}}{}
	m := &{{.ClassName}}Metadata{}
    if err := metadata.InitMetadata(m, v); err != nil {
        panic(err)
    }
	return m
}

//
// Get{{.Name}}Metadata
// @Description: 获取{{.Description}}元数据
// @return *{{.Name}}Metadata
//
func Get{{.Name}}Metadata() *{{.Name}}Metadata {
    return _{{.name}}Metadata
}

//
// GetId
// @Description: 取ID值
//
func (e *{{.ClassName}}) GetId() string {
    return e.Id
}

//
// SetId
// @Description: 设置ID值
//
func (e *{{.ClassName}}) SetId(v string) {
    e.Id = v
}

//
// GetProperties
// @Description: 获取属性列表
// @return metadata.Properties 属性列表
//
func (e *{{.ClassName}}) GetProperties() metadata.Properties {
	return Get{{.ClassName}}Metadata().Properties
}
